Many software development tools are available today for use by software designers (or “developers”) in creating various types of software applications. Software “designers” and “developers” are used interchangeably herein, and generally refer to anyone involved with using a software development tool for authoring, designing, or otherwise creating or modifying a software application. In a software development environment, a developer may interact with a software development tool for writing code, compiling the code, testing or debugging the code, and packaging the resulting application for deployment in a run-time environment. The software development tool may be implemented as a software application that is stored to a computer-readable medium and executed by a computer processor to perform the tasks associated with aiding a developer in the development of a software application. As one example, an integrated development environment (IDE) is commonly used for developing software applications. In general, an IDE is a programming environment that has been packaged as a software application program, typically including a code editor, a compiler, a debugger, and a graphical user interface (GUI) builder. The IDE may be a stand-alone application or may be included as part of one or more existing and compatible applications. IDEs provide a user-friendly framework for many modern programming languages, such as Visual Basic, Java, and PowerBuilder. IDEs for developing markup language (e.g., HTML, XML, etc.) applications are among the most commonly used.
Thus, IDEs provide software tools that allow a developer (e.g., a web developer) to create web pages, websites, interactive applications, and the like for use by end users (e.g., visitors to websites). Various IDEs exist in the current marketplace, such as DREAMWEAVER®, available from Adobe Systems Incorporated, and FRONTPAGE®, available from Microsoft Corporation. DREAMWEAVER is an IDE that allows web developers to design Hypertext Markup Language (HTML) web pages in both a code editor and a graphical-based design time environment. DREAMWEAVER also allows the developer to design in other markup languages, such as, for example, Extensible Markup Language (XML), Extensible HTML (XHTML), Active Server Page (ASP), COLDFUSION™ Markup Language (CFML™), and the like.
An IDE may allow a developer to create a document in an environment that includes both a text-based code view and a graphical-based design view. The code view renders the source code (e.g., markup language code) as text in a portion of the screen and allows the developer to see and manipulate the source code in the document file. For example, the developer may write and edit HTML or Cascading Style Sheets (CSS) code in the code view. The design view, on the other hand, is a What You See Is What You Get (WYSIWYG) view of the document that allows the user to visually manipulate the interpreted and graphically laid-out version of the document, such as, for example, by dragging, dropping, cutting, and pasting visual components. As the developer works, changes to the document are reflected in both the code view and the design view.
One popular web development technique that may be employed by a developer when working with a development tool for developing a web page is known as AJAX. AJAX, shorthand for Asynchronous JavaScript and XML, which is a well-known web development technique for creating interactive web applications that process user requests immediately. AJAX combines several programming tools including JavaScript, dynamic HTML (DHTML), Extensible Markup Language (XML), cascading style sheets (CSS), the Document Object Model (DOM), and the Microsoft object, XMLHttpRequest. In general, AJAX permits web pages to be created such that regions of the page may be updated without requiring a full page refresh. AJAX allows content on web pages to update immediately when a user performs an action, unlike an HTTP request, during which users must wait for a whole new page to load. For example, a weather forecasting site could display local conditions on one side of the page without delay after a user types in a zip code.
Web pages, unlike native applications, are loosely coupled, meaning that the data they display are not tightly bound to data sources and must be first marshalled (set out in proper order) into an HTML page format before they can be presented on a client machine. For this reason, web pages traditionally had to be re-loaded each time a user was to view different datasets (e.g., as the data being presented on the web page changed). By using the XmlHttpRequest object to request and return data without a re-load, a programmer by-passes this requirement and makes the loosely coupled web page behave much like a tightly coupled application, but with a more variable lag time for the data to pass through a longer “wire” to the remote web browser.
Thus, using AJAX, a developer can bind data on the client-browser and update certain regions of a web page without incurring a full page refresh. Each region of the web page that can individually be updated without refreshing the full page may be specified in the web page's underlying markup language code using tags, such as the <div> tag. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user requests a change. This is meant to increase the web page's interactivity, speed, and usability.
Software development tools, such as IDEs, commonly provide various features to help a developer in developing a software application, such as a web page. For instance, software development tools often provide code hinting. Code hinting is a help feature that is used by many software development tools in a code-view editing mode. In general, the development tool monitors the developer's input and attempts to recognize/anticipate code that the developer desires to input, and provides hints as to the code that the development tool believes the developer desires such that the developer can quickly select the hinted code if it is what the developer desires, thereby alleviating the developer from having to fully type the hinted code. As one example, as the developer types code, the development tool may present a pop-up box near the insertion point that lists possible code elements, such as code commands, components, data schemas, application programming interface (API) methods, etc. associated with the input typed by the developer. The developer may then scroll through the list and pick the specific element (e.g., component, tag, data schema, command, method, or the like) from the displayed list instead of typing the desired information to completion. Again, as the developer makes the particular selection, the application development environment inserts the selected code and/or visual rendering thereof in the corresponding section of the code being edited.
While code hinting can be helpful to a developer, and its use generally encourages accuracy in coding (e.g., by reducing typos and other human errors), the inventor of the present application has recognized that often such code hinting presents too many choices to a developer, thus reducing the code hinting feature's usability. For instance, a code hinting pop-up box may present a long list of choices to a developer, thus requiring the developer to scroll through the long list to find the desired code element to insert. If the list is too long, the developer may be discouraged from searching through it and may elect instead to manually type the desired code, and thus the potential benefits of providing code hinting may go unrecognized. The undesirably long lists in code hinting often arise because development tools have traditionally failed to consider the context in which the developer is working when presenting a code hint. For instance, upon recognizing that a developer is attempting to code a reference to a data schema, traditional development tools may present data schema hints for all data sources referenced in the application tinder development, rather than considering the context in which the developer is currently working, such as a given region of the code in which the developer is typing. Accordingly, a desire exists for a software development tool, such as an IDE, that improves the usability of code hinting.